package chen.web.forum.tag;

import java.util.List;

import chen.web.forum.Subject;
import chen.web.forum.TopicInfo;

public interface TagManager {
	
	void addTag(Tag tag);
	void deleteTag(Tag tag);
	void modifyTag(Tag tag);
	Tag getTag(int id);
	Tag getTag(String tagName);
	
	/**
	 * 给文本内容找出标签
	 * @param text
	 * @return
	 */
	List<Tag> findTags(String text);
	
	/**
	 * 获取指定标签和类型下的主题数量
	 * @param tag	标签
	 * @param type	主题类型
	 * @return	主题数量
	 */
	int subjectAmount(Tag tag);
	
	/**
	 * 标记主题
	 * @param subject
	 * @param tag
	 */
	void tagSubject(Subject subject, Tag... tag);
	
	/**
	 * 去掉主题标签
	 * @param subject
	 * @param tag
	 */
	void removeTag(Subject subject, Tag... tag);

	/**
	 * 获取指定标签下的主题信息集合
	 * @param tag	标签
	 * @param beginOffset	开始位置
	 * @param count			数量
	 * @return	主题集合
	 */
	List<TopicInfo> getTopicInfoList(Tag tag, int beginOffset, int count);
	

	/**
	 * 获取相关标签，按照关系次数由多到少排序
	 * @param tag
	 * @param count	获取相关标签的数量
	 * @return
	 */
	List<Tag> getRelatedTags(Tag tag, int count);
	
	
	/**
	 * 获取热门标签
	 * @param beginOffset
	 * @param count
	 * @return
	 */
	List<Tag> getHotTags(int beginOffset, int count);
	
	/**
	 * 获取最新标签
	 * @param beginOffset
	 * @param count
	 * @return
	 */
	List<Tag> getLatestTags(int beginOffset, int count);
	
	/**
	 * 标签总数
	 * @return
	 */
	int totalTag();
		

}
